import fs from 'node:fs'
import { Low } from 'lowdb'
import { JSONFile } from 'lowdb/node'
import lodash from 'lodash'
import { getPath ,createFile } from '../utils.js'

// 继承lodash的方法
class lowWithLodash extends Low {
    chain = lodash.chain(this).get('data')
}

// 创建jsonDB实例
export async function createDB(fileName, fileType = 'array') {
    const findFile = getPath(`/db/${fileName}`, 'file', 'json')
    const checkFile = fs.existsSync(findFile) // 检查文件是否存在
    const file = !checkFile ? await createFile(findFile, fileType) : findFile
    const adapter = new JSONFile(file)
    const db = new lowWithLodash(adapter)
    return db
}